package com.example.framework.websocket.core.sender;

import com.example.framework.common.util.json.JsonUtils;

/**
 * WebSocket 消息的发送器接口
 */
public interface WebSocketMessageSender {

    /**
     * 发送消息给指定用户
     *
     * @param userId 用户编号
     * @param messageType 消息类型
     * @param messageContent 消息内容，JSON 格式
     */
    void sendByUserId(String userId, String messageType, String messageContent);

    /**
     * 发送消息给指定 Session
     *
     * @param sessionId Session 编号
     * @param messageType 消息类型
     * @param messageContent 消息内容，JSON 格式
     */
    void sendBySessionId(String sessionId, String messageType, String messageContent);

    default void sendByUserId(String userId, String messageType, Object messageContent) {
        sendByUserId(userId, messageType, JsonUtils.toJsonString(messageContent));
    }

    default void sendBySessionId(String sessionId, String messageType, Object messageContent) {
        sendByUserId(sessionId, messageType, JsonUtils.toJsonString(messageContent));
    }

}
